
struct ParameterEntry
{
    ParameterEntry()
    {

    }
    ParameterEntry(const string &_name, const string &_value)
    {
        name = _name;
        value = _value;
        if(name[name.size() - 1] == ' ')
        {
            name.pop_back();
        }
    }
    string name;
    string value;
};

class ParameterFile
{
public:
    ParameterFile() {}
    ParameterFile(const string &Filename);
    
    string GetRequiredString(const string &parameterName) const;
    string GetOptionalString(const string &parameterName) const;
    
    int GetInteger(const string &parameterName) const;
    bool GetBoolean(const string &parameterName) const;
    UINT GetUnsignedInteger(const string &parameterName) const;
    double GetDouble(const string &parameterName) const;
    float GetFloat(const string &parameterName) const;
    
    void AddFile(const string &filename);    
    
private:
    
    ParameterEntry* FindParameter(const string &parameterName);
    const ParameterEntry* FindParameter(const string &parameterName) const;

    vector<ParameterEntry> _parameters;
};
